#ifndef __MP3_DECODE_H
#define __MP3_DECODE_H
typedef uint32_t (*_mp3_read)(void *extern_read,void *ptr,uint32_t offset,uint32_t size);
typedef void (*_mp3_close)(void *extern_read,void *data);

enum
{
    MP3_NOT_RUN, //代表可能创建了线程,但没有实际运行(可能是创建线程失败或者被其他高优先级任务一直卡住)
    MP3_PLAY,
    MP3_PAUSE,
    MP3_STOP,
};
//读取mp3的接口,外部先将fp创建,然后注册read和close的函数
struct extern_read
{
    void *fp;
    uint32_t readsize;
    _mp3_read mp3_read;
    _mp3_close mp3_close;
    uint32_t audio_hz;
    uint8_t *sd_buf;
    uint8_t status; //用于控制是否继续编码或者是否为暂停、播放、退出几个状态,只是由外部去控制
    uint8_t inside_status;  //内部状态,有mp3内部去修改
};


uint8_t set_mp3_decode_status(uint8_t status);
uint8_t get_mp3_decode_status();
void mp3_decode_thread(void *d);
#endif